home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 September / CHIP Eylül 1998.iso / Slackwar / docs / DOStoLinux-HOWTO < prev    next >
Text File  |  1997-01-02  |  45KB  |  1,209 lines

  1.   From DOS to Linux HOWTO
  2.   By Guido Gonzato <guido@ibogfs.df.unibo.it>
  3.   v1.0, 11 December 1996
  4.  
  5.   This HOWTO is dedicated to all the (soon to be former?) DOS users who
  6.   have just taken the plunge and decided to switch to Linux, the free
  7.   Unix clone for 386+ computers. Given the similarities between DOS and
  8.   Unix, the purpose of this document is to help the reader translate his
  9.   or her knowledge of DOS into the Linux environment, so as to be pro¡
  10.   ductive asap.
  11.  
  12.   1.  Introduction
  13.  
  14.   1.1.  Is Linux Right for You?
  15.  
  16.   You want to switch from DOS to Linux? Good idea, but beware: it might
  17.   not be useful for you. IMHO, there is no such thing as ``the best
  18.   computer'' or ``the best operating system'': it depends on what one
  19.   has to do. That's why I don't believe that Linux is the best solution
  20.   for everyone, even if it is technically superior to many commercial
  21.   oses. You're going to benefit immensely from Linux if what you need is
  22.   sw for programming, the Internet, TeX... technical sw in general, but
  23.   if you mostly need commercial sw, or if you don't feel like learning
  24.   and typing commands, look elsewhere.
  25.  
  26.   Linux is not (for now) as easy to use and configure as Windows or the
  27.   Mac, so be prepared to hack quite a bit. In spite of these warnings,
  28.   let me tell you that I'm 100% confident that if you belong to the
  29.   right user type you'll find in Linux your computer Nirvana. It's up to
  30.   you. And remember that Linux + DOS/Windows can coexist on the same
  31.   machine, anyway.
  32.  
  33.   Prerequisites for this howto: I'll assume that
  34.  
  35.   ╖  you know the basic DOS commands and concepts;
  36.  
  37.   ╖  Linux, possibly with X Window System, is properly installed on your
  38.      PC;
  39.  
  40.   ╖  your shell---the equivalent of COMMAND.COM---is bash;
  41.  
  42.   ╖  you understand that this guide is only an incomplete primer. For
  43.      more information, please refer to Matt Welsh's ``Linux Installation
  44.      and Getting Started'' and/or Larry Greenfield's ``Linux User
  45.      Guide'' (sunsite.unc.edu:/pub/Linux/docs/LDP).
  46.  
  47.   This howto replaces the old ``From DOS to Linux - Quick!'' mini-howto.
  48.  
  49.   1.2.  It Is. Tell Me More
  50.  
  51.   You installed Linux and the programs you needed on the PC. You gave
  52.   yourself an account (if not, type adduser now!) and Linux is running.
  53.   You've just entered your name and password, and now you are looking at
  54.   the screen thinking: ``Well, now what?''
  55.  
  56.   Now, don't despair. You're almost ready to do the same things you used
  57.   to do with DOS, and many more. If you were running DOS instead of
  58.   Linux, you would be doing some of the following tasks:
  59.  
  60.   ╖  running programs and creating, copying, viewing, deleting,
  61.      printing, renaming files;
  62.  
  63.   ╖  CD'ing, MD'ing, RD'ing, and DIR'ring your directories;
  64.  
  65.   ╖  formatting floppies and copying files from/to them;
  66.  
  67.   ╖  mending your AUTOEXEC.BAT and CONFIG.SYS;
  68.  
  69.   ╖  writing your own .BAT files and/or QBasic programs;
  70.  
  71.   ╖  the remaining 1%.
  72.  
  73.   You'll be glad to know that these tasks can be accomplished under
  74.   Linux in a fashion similar to DOS. Under DOS, the average user uses
  75.   very few of the 100+ commands available: the same, up to a point,
  76.   holds for Linux.
  77.  
  78.   A few things to point out before going on:
  79.  
  80.   ╖  first, how to get out. To quit Linux: if you see a textmode screen,
  81.      press CTRL-ALT-DEL, wait for the system to fix its innards and tell
  82.      you everything is OK, then switch off the PC. If you are working
  83.      under X Window System, press CTRL-ALT-BACKSPACE first, then CTRL-
  84.      ALT-DEL. Never switch off or reset the PC directly: it may damage
  85.      the filesystem;
  86.  
  87.   ╖  unlike DOS, Linux has built-in security mechanisms, due to its
  88.      multiuser nature. Files and directories have permissions associated
  89.      to them, and therefore some cannot be accessed by the normal user;
  90.      (see Section ``Permissions'').  only the user whose login name is
  91.      ``root'' has the power. (This guy's the system administrator. If
  92.      you work on your own PC, you'll be root as well.) DOS, on the
  93.      contrary, will let you wipe out the entire contents of your hard
  94.      disk;
  95.  
  96.   ╖  you are strongly encouraged to experiment, play, try by yourself:
  97.      it surely won't hurt. You can get some help typing at the prompt ($
  98.      is the standard prompt, # is the prompt for root):
  99.  
  100.        $ help
  101.  
  102.   (this gives help about bash), or get info about a command typing
  103.  
  104.        $ man command
  105.  
  106.   which, if you have installed the man pages, will invoke the manual
  107.   (``man'') page associated to command. You may also try:
  108.  
  109.   $ apropos command
  110.   $ whatis command
  111.  
  112.   and press 'q' to exit;
  113.  
  114.   ╖  most of the power and flexibility of Unix comes from the simple
  115.      concepts of redirection and piping, more powerful than under DOS.
  116.      Simple commands can be strung together to accomplish complex tasks.
  117.      Do use these features!
  118.  
  119.   ╖  conventions: <...> means something that must be specified, while
  120.      [...] something optional. Example:
  121.  
  122.        $ tar -tf <file.tar> [> redir_file]
  123.  
  124.   file.tar must be indicated, but redirection to redir_file is optional.
  125.  
  126.   ╖  from now on ``RMP'' means ``please read the man pages for further
  127.      information''.
  128.  
  129.   1.3.  For the Impatient
  130.  
  131.   Want to strike out? Have a look at this:
  132.  
  133.        DOS                     Linux                   Notes
  134.        ------------------------------------------------------------------------------
  135.  
  136.        BACKUP                  tar -Mcvf device dir/   completely different
  137.        CD dirname\             cd dirname/             almost the same syntax
  138.        COPY file1 file2        cp file1 file2          ditto
  139.        DEL file                rm file                 beware - no undelete
  140.        DELTREE dirname         rm -R dirname/          ditto
  141.        DIR                     ls                      not exactly the same syntax
  142.        EDIT file               vi file                 I think you won't like it
  143.                                emacs file              this is better
  144.                                jstar file              feels like dos' edit
  145.        FORMAT                  fdformat,
  146.                                mount, umount           quite different syntax
  147.        HELP command            man command             same philosophy
  148.        MD dirname              mkdir dirname/          almost the same syntax
  149.        MOVE file1 file2        mv file1 file2          ditto
  150.        NUL                     /dev/null               ditto
  151.        PRINT file              lpr file                ditto
  152.        PRN                     /dev/lp0,
  153.                                /dev/lp1                ditto
  154.        RD dirname              rmdir dirname/          almost the same syntax
  155.        REN file1 file2         mv file1 file2          not for multiple files
  156.        RESTORE                 tar -Mxpvf device       different syntax
  157.        TYPE file               less file               much better
  158.        WIN                     startx                  poles apart!
  159.  
  160.   If you need more than a table of commands, please refer to the
  161.   following sections.
  162.  
  163.   2.  Files and Programs
  164.  
  165.   2.1.  Files: Preliminary Notions
  166.  
  167.   Linux has a file system---meaning by that ``the structure of
  168.   directories and files therein''---very similar to that of DOS. Files
  169.   have filenames that obey special rules, are stored in directories,
  170.   some are executable, and among these most have command switches.
  171.   Moreover, you can use wildcard characters, redirection, and piping.
  172.   There are only a few minor differences:
  173.  
  174.   ╖  under DOS, file names are in the so-called 8.3 form; e.g.
  175.      NOTENOUG.TXT. Under Linux we can do better. If you installed Linux
  176.      using a filesystem like ext2 or umsdos, you can use longer
  177.      filenames (up to 255 characters), and with more than one dot in
  178.      them: for example, This_is.a.VERY_long.filename. Please note that I
  179.      used both upper and lower case characters: in fact...
  180.  
  181.   ╖  upper and lower case characters in file names or commands are
  182.      different. Therefore, FILENAME.tar.gz and filename.tar.gz are two
  183.      different files. ls is a command, LS is a mistake;
  184.  
  185.   ╖  there are no compulsory exensions like .COM and .EXE for programs,
  186.      or .BAT for batch files. Executable files are marked by an asterisk
  187.      For example:
  188.  
  189.        $ ls -F
  190.        letter_to_Joe  cindy.jpg  cjpg*  I_am_a_dir/  my_1st_script*  old~
  191.  
  192.   The files cjpg* and my_1st_script* are executable---``programs''.
  193.   Under DOS, backup files end in .BAK, while under Linux they end with a
  194.   tilde '~'. Further, a file whose name starts with a dot is considered
  195.   as hidden. Example: the file .I.am.a.hidden.file won't show up after
  196.   the ls command;
  197.  
  198.   ╖  DOS program switches are obtained with /switch, Linux switches with
  199.      -switch or --switch. Example: dir /s becomes ls -R. Note that many
  200.      DOS programs, like PKZIP or ARJ, use Unix-style switches.
  201.  
  202.   You can now jump to Section ``Translating Commands from DOS to
  203.   Linux'', but if I were you I'd read on.
  204.  
  205.   2.2.  Symbolic Links
  206.  
  207.   Unix has a type of file that doesn't exist under DOS: the symbolic
  208.   link. This can be thought of as a pointer to a file or to a directory,
  209.   and can be used instead of the file or directory it points to; it's
  210.   similar to Win 95 shortcuts.  Examples of symbolic links are /usr/X11,
  211.   which points to /usr/X11R6; /dev/modem, which points to either
  212.   /dev/cua0 or /dev/cua1.
  213.  
  214.   To make a symbolic link:
  215.  
  216.        $ ln -s <file_or_dir> <linkname>
  217.  
  218.   Example:
  219.  
  220.        $ ln -s /usr/doc/g77/DOC g77manual.txt
  221.  
  222.   Now you can refer to g77manual.txt instead of /usr/doc/g77/DOC.
  223.  
  224.   2.3.  Permissions and Ownership
  225.  
  226.   DOS files and directories have the following attributes: A (archive),
  227.   H (hidden), R (read-only), and S (system). Only H and R make sense
  228.   under Linux: hidden files start with a dot, and for the R attribute,
  229.   read on.
  230.  
  231.   Under Unix a file has ``permissions'' and an owner, who belongs to a
  232.   ``group''. Look at this example:
  233.  
  234.        $ ls -l /bin/ls
  235.        -rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*
  236.  
  237.   The first field contains the permissions of the file /bin/ls, which
  238.   belongs to root, group bin. Leaving the remaining information aside
  239.   (Matt's book is there for that purpose), remember that -rwxr-xr-x
  240.   means (from left to right):
  241.  
  242.   - is the file type (- = ordinary file, d = directory, l = link, etc);
  243.   rwx are the permissions for the file owner (read, write, execute); r-x
  244.   are the permissions for the group of the file owner (read, execute);
  245.   (I won't cover the concept of group, you can survive without it as
  246.   long as you're a beginner ;-) r-x are the permissions for all other
  247.   users (read, execute).
  248.  
  249.   This is why you can't delete the file /bin/ls unless you are root: you
  250.   don't have the write permission to do so. To change a file's
  251.   permissions, the command is:
  252.  
  253.        $ chmod <whoXperm> <file>
  254.  
  255.   where who is u (user, that is owner), g (group), o (other), X is
  256.   either + or -, perm is r (read), w (write), or x (execute). Examples:
  257.  
  258.        $ chmod u+x file
  259.  
  260.   this sets the execute permission for the file owner. Shortcut: chmod
  261.   +x file.
  262.  
  263.        $ chmod go-wx file
  264.  
  265.   this removes write and execute permission for everyone but the owner.
  266.  
  267.        $ chmod ugo+rwx file
  268.  
  269.   this gives everyone read, write, and execute permission.
  270.  
  271.        # chmod +s file
  272.  
  273.   this makes a so-called ``setuid'' or ``suid'' file---a file that
  274.   everyone can execute with root privileges.
  275.  
  276.   A shorter way to refer to permissions is with numbers: rwxr-xr-x can
  277.   be expressed as 755 (every letter corresponds to a bit: --- is 0, --x
  278.   is 1, -w- is 2, -wx is 3...). It looks difficult, but with a bit of
  279.   practice you'll understand the concept.
  280.  
  281.   root, being the so-called superuser, can change everyone's file
  282.   permissions.  There's more to it---RMP.
  283.  
  284.   2.4.  Translating Commands from DOS to Linux
  285.  
  286.   On the left, the DOS commands; on the right, their Linux counterpart.
  287.  
  288.        COPY:           cp
  289.        DEL:            rm
  290.        MOVE:           mv
  291.        REN:            mv
  292.        TYPE:           more, less, cat
  293.  
  294.   Redirection and plumbing operators:  < > >> |
  295.  
  296.   Wildcards: * ?
  297.  
  298.   nul: /dev/null
  299.  
  300.   prn, lpt1:   /dev/lp0 or /dev/lp1; lpr
  301.  
  302.   - EXAMPLES -
  303.  
  304.        DOS                                     Linux
  305.        ---------------------------------------------------------------------
  306.  
  307.        C:\GUIDO>copy joe.txt joe.doc           $ cp joe.txt joe.doc
  308.        C:\GUIDO>copy *.* total                 $ cat * > total
  309.        C:\GUIDO>copy fractals.doc prn          $ lpr fractals.doc
  310.        C:\GUIDO>del temp                       $ rm temp
  311.        C:\GUIDO>del *.bak                      $ rm *~
  312.        C:\GUIDO>move paper.txt tmp\            $ mv paper.txt tmp/
  313.        C:\GUIDO>ren paper.txt paper.asc        $ mv paper.txt paper.asc
  314.        C:\GUIDO>print letter.txt               $ lpr letter.txt
  315.        C:\GUIDO>type letter.txt                $ more letter.txt
  316.        C:\GUIDO>type letter.txt                $ less letter.txt
  317.        C:\GUIDO>type letter.txt > nul          $ cat letter.txt > /dev/null
  318.                n/a                             $ more *.txt *.asc
  319.                n/a                             $ cat section*.txt | less
  320.  
  321.   Notes:
  322.  
  323.   ╖  * is smarter under Linux: * matches all files except the hidden
  324.      ones; .* matches all hidden files; *.* matches only those that have
  325.      a '.'  in the middle, followed by other characters; p*r matches
  326.      both `peter' and `piper'; *c* matches both `picked' and `peck';
  327.  
  328.   ╖  when using more, press SPACE to read through the file, `q' or CTRL-
  329.      C to exit. less is more inuitive and lets you use the arrow keys;
  330.  
  331.   ╖  there is no UNDELETE, so think twice before deleting anything;
  332.  
  333.   ╖  in addition to DOS's < > >>, Linux has 2> to redirect error
  334.      messages (stderr); moreover, 2>&1 redirects stderr to stdout, while
  335.      1>&2 redirects stdout to stderr;
  336.  
  337.   ╖  Linux has another wildcard: the []. Use: [abc]* matches files
  338.      starting with a, b, c; *[I-N,1,2,3] matches files ending with I, J,
  339.      K, L, M, N, 1, 2, 3;
  340.  
  341.   ╖  there is no DOS-like RENAME; that is, mv *.xxx *.yyy won't work;
  342.  
  343.   ╖  use cp -i and mv -i to be warned when a file is going to be
  344.      overwritten.
  345.  
  346.   2.5.  Running Programs: Multitasking and Sessions
  347.  
  348.   To run a program, type its name as you would do under DOS. If the
  349.   directory (Section ``Directories'') where the program is stored is
  350.   included in the PATH (Section ``System Initialization''), the program
  351.   will start. Exception: unlike DOS, under Linux a program located in
  352.   the current directory won't run unless the directory is included in
  353.   the PATH. Escamotage: being prog your program, type ./prog.
  354.  
  355.   This is what the typical command line looks like:
  356.  
  357.        $ command -s1 -s2 ... -sn par1 par2 ... parn < input > output
  358.  
  359.   where -s1, ..., -sn are the program switches, par1, ..., parn are the
  360.   program parameters. You can issue several commands on the command
  361.   line:
  362.  
  363.        $ command1 ; command2 ; ... ; commandn
  364.  
  365.   That's all about running programs, but it's easy to go a step beyond.
  366.   One of the main reasons for using Linux is that it is a multitasking
  367.   os---it can run several programs (from now on, processes) at the same
  368.   time. You can launch processes in background and continue working
  369.   straight away. Moreover, Linux lets you have several sessions: it's
  370.   like having many computers to work on at once!
  371.  
  372.   ╖  To switch to session 1..6:
  373.  
  374.        $ ALT-F1 ... ALT-F6
  375.  
  376.   ╖  To start a new session without leaving the current one:
  377.  
  378.        $ su - <loginname>
  379.  
  380.   Example:
  381.  
  382.        $ su - root
  383.  
  384.   This is useful, for one, when you need to mount a disk (Section
  385.   ``Floppies''): normally, only root can do that.
  386.  
  387.   ╖  To end a session:
  388.  
  389.        $ exit
  390.  
  391.   If there are stopped jobs (see later), you'll be warned.
  392.  
  393.   ╖  To launch a process in foreground:
  394.  
  395.        $ progname [-switches] [parameters] [< input] [> output]
  396.  
  397.   ╖  To launch a process in background, add an ampersand '&' at the end
  398.      of the command line:
  399.  
  400.        $ progname [-switches] [parameters] [< input] [> output] &
  401.        [1] 123
  402.  
  403.   the shell identifies the process with a job number (e.g. [1]; see
  404.   below), and with a PID (123 in our example).
  405.  
  406.   ╖  To see how many processes there are:
  407.  
  408.        $ ps -a
  409.  
  410.   This will output a list of currently running processes.
  411.  
  412.   ╖  To kill a process:
  413.  
  414.        $ kill <PID>
  415.  
  416.   You may need to kill a process when you don't know how to quit it the
  417.   right way... ;-). Sometimes, a process will only be killed by either
  418.   of the following:
  419.  
  420.        $ kill -15 <PID>
  421.        $ kill -9 <PID>
  422.  
  423.   In addition to this, the shell allows you to stop or temporarily sus¡
  424.   pend a process, send a process to background, and bring a process from
  425.   background to foreground. In this context, processes are called
  426.   ``jobs''.
  427.  
  428.   ╖  To see how many jobs there are:
  429.  
  430.        $ jobs
  431.  
  432.   here jobs are identified by their job number, not by their PID.
  433.  
  434.   ╖  To stop a process running in foreground (it won't always work):
  435.  
  436.        $ CTRL-C
  437.  
  438.   ╖  To suspend a process running in foreground (ditto):
  439.  
  440.        $ CTRL-Z
  441.  
  442.   ╖  To send a suspended process into background (it becomes a job):
  443.  
  444.        $ bg <job>
  445.  
  446.   ╖  To bring a job to foreground:
  447.  
  448.        $ fg <job>
  449.  
  450.   ╖  To kill a job:
  451.  
  452.        $ kill <%job>
  453.  
  454.   where <job> may be 1, 2, 3, ...  Using these commands you can format a
  455.   disk, zip a bunch of files, compile a program, and unzip an archive
  456.   all at the same time, and still have the prompt at your disposal. Try
  457.   this with DOS! And try with Windows, just to see the difference in
  458.   performance.
  459.  
  460.   2.6.  Running Programs on Remote Computers
  461.  
  462.   To run a program on a remote machine whose IP address is
  463.   remote.bigone.edu, you do:
  464.  
  465.        $ telnet remote.bigone.edu
  466.  
  467.   After logging in, start your favourite program. Needless to say, you
  468.   must have an account on the remote machine.
  469.  
  470.   If you have X11, you can even run an X application on a remote
  471.   computer, displaying it on your X screen. Let remote.bigone.edu be the
  472.   remote X computer and local.linux.box be your Linux machine. To run
  473.   from local.linux.box an X program that resides on remote.bigone.edu,
  474.   do the following:
  475.  
  476.   ╖  fire up X11, start an xterm or equivalent terminal emulator, then
  477.      type:
  478.  
  479.        $ xhost +remote.bigone.edu
  480.        $ telnet remote.bigone.edu
  481.  
  482.   ╖  after logging in, type:
  483.  
  484.        remote:$ DISPLAY=local.linux.box:0.0
  485.        remote:$ progname &
  486.  
  487.   (instead of DISPLAY..., you may have to write setenv DISPLAY
  488.   local.linux.box:0.0. It depends on the remote shell.)
  489.  
  490.   Et voila! Now progname will start on remote.bigone.edu and will be
  491.   displayed on your machine. Don't try this over a ppp line, though.
  492.  
  493.   3.  Using Directories
  494.  
  495.   3.1.  Directories: Preliminary Notions
  496.  
  497.   We have seen the differences between files under DOS and Linux. As for
  498.   directories, under DOS the root directory is  under Linux / is.
  499.   Similarly, nested directories are separated by  under DOS, by / under
  500.   Linux. Example of file paths:
  501.  
  502.        DOS:    C:\PAPERS\GEOLOGY\MID_EOC.TEX
  503.        Linux:  /home/guido/papers/geology/mid_eocene.tex
  504.  
  505.   As usual, .. is the parent directory, . is the current directory.
  506.   Remember that the system won't let you cd, rd, or md everywhere you
  507.   want. Each user starts from his or her own directory called dir is
  508.   /home/guido.
  509.  
  510.   3.2.  Directories Permissions
  511.  
  512.   Directories, too, have permissions. What we have seen in Section
  513.   ``Permissions'' holds for directories as well (user, group, and
  514.   other). For a directory, rx means you can cd to that directory, and w
  515.   means that you can delete a file in the directory (according to the
  516.   file's permissions, of course), or the directory itself.
  517.  
  518.   For example, to prevent other users from snooping in /home/guido/text:
  519.  
  520.        $ chmod o-rwx /home/guido/text
  521.  
  522.   3.3.  Translating Commands from DOS to Linux
  523.  
  524.        DIR:            ls, find, du
  525.        CD:             cd, pwd
  526.        MD:             mkdir
  527.        RD:             rmdir
  528.        DELTREE:        rm -R
  529.        MOVE:           mv
  530.  
  531.   - EXAMPLES -
  532.  
  533.        DOS                                     Linux
  534.        ---------------------------------------------------------------------
  535.  
  536.        C:\GUIDO>dir                            $ ls
  537.        C:\GUIDO>dir file.txt                   $ ls file.txt
  538.        C:\GUIDO>dir *.h *.c                    $ ls *.h *.c
  539.        C:\GUIDO>dir/p                          $ ls | more
  540.        C:\GUIDO>dir/a                          $ ls -l
  541.        C:\GUIDO>dir *.tmp /s                   $ find / -name "*.tmp"
  542.        C:\GUIDO>cd                             $ pwd
  543.                n/a - see note                  $ cd
  544.                ditto                           $ cd ~
  545.                ditto                           $ cd ~/temp
  546.        C:\GUIDO>cd \other                      $ cd /other
  547.        C:\GUIDO>cd ..\temp\trash               $ cd ../temp/trash
  548.        C:\GUIDO>md newprogs                    $ mkdir newprogs
  549.        C:\GUIDO>move prog ..                   $ mv prog ..
  550.        C:\GUIDO>md \progs\turbo                $ mkdir /progs/turbo
  551.        C:\GUIDO>deltree temp\trash             $ rm -R temp/trash
  552.        C:\GUIDO>rd newprogs                    $ rmdir newprogs
  553.        C:\GUIDO>rd \progs\turbo                $ rmdir /progs/turbo
  554.  
  555.   Notes:
  556.  
  557.   1. when using rmdir, the directory to remove must be empty.  To delete
  558.      a directory and all of its contents, use rm -R (at your own risk).
  559.  
  560.   2. the character '~' is a shortcut for the name of your home
  561.      directory. The commands cd or cd ~ will take you to your home
  562.      directory from wherever you are; the command cd ~/tmp will take you
  563.      to /home/your_home/tmp.
  564.  
  565.   3. cd - ``undoes'' the last cd.
  566.  
  567.   4.  Floppies, Hard Disks, and the Like
  568.  
  569.   4.1.  Managing Devices
  570.  
  571.   You have never thought about it, but the DOS command FORMAT A: does a
  572.   lot more work than it seems. In fact, when you issue the command
  573.   FORMAT it will: 1) physically format the disk; 2) create the A:
  574.   directory (= create a filesystem); 3) make the disk available to the
  575.   user (= mount the disk).
  576.  
  577.   These three steps are addressed separately under Linux. You can use
  578.   floppies in MS-DOS format, though other formats are available and are
  579.   better---the MS-DOS format won't let you use long filenames.  Here is
  580.   how to prepare a disk (you'll need to start a session as root):
  581.  
  582.   ╖  To format a standard 1.44 meg floppy disk (A:):
  583.  
  584.        # fdformat /dev/fd0H1440
  585.  
  586.   ╖  To create a filesystem:
  587.  
  588.        # mkfs -t ext2 -c /dev/fd0H1440
  589.  
  590.   or
  591.  
  592.        # mformat a:
  593.  
  594.   to create an MS-DOS filesystem. Before using the disk, you must mount
  595.   it.
  596.  
  597.   ╖  To mount the disk:
  598.  
  599.        # mount -t ext2 /dev/fd0 /mnt
  600.  
  601.   or
  602.  
  603.        # mount -t msdos /dev/fd0 /mnt
  604.  
  605.   Now you can address the files in the floppy. When you've finished,
  606.   before extracting the disk you must unmount it.
  607.  
  608.   ╖  To unmount the disk:
  609.  
  610.        # umount /mnt
  611.  
  612.   Now you can extract the disk. Obviously, you have to fdformat and mkfs
  613.   only unformatted disks, not previously used ones. If you want to use
  614.   drive B:, refer to fd1H1440 and fd1 instead of fd0H1440 and fd0 in the
  615.   examples above.
  616.  
  617.   All you used to do with A: or B: is now done using /mnt instead.
  618.   Examples:
  619.  
  620.        DOS                                     Linux
  621.        ---------------------------------------------------------------------
  622.  
  623.        C:\GUIDO>dir a:                         $ ls /mnt
  624.        C:\GUIDO>copy a:*.*                     $ cp /mnt/* /docs/temp
  625.        C:\GUIDO>copy *.zip a:                  $ cp *.zip /mnt/zip
  626.        C:\GUIDO>a:                             $ cd /mnt
  627.        A:>_                                    /mnt/$ _
  628.  
  629.   Needless to say, what holds for floppies also holds for other devices;
  630.   for instance, you may want to mount another hard disk or a CD-ROM
  631.   drive.  Here's how to mount the CD-ROM:
  632.  
  633.        # mount -t iso9660 /dev/cdrom /mnt
  634.  
  635.   This was the ``official'' way to mount your disks, but there's a trick
  636.   in store. Since it's a bit of a nuisance having to be root to mount a
  637.   floppy or a CD-ROM, every user can be allowed to mount them this way:
  638.  
  639.   ╖  as root, create the directories /mnt/a, /mnt/a:, and /mnt/cdrom
  640.  
  641.   ╖  add in /etc/fstab the following lines:
  642.  
  643.   /dev/cdrom      /mnt/cdrom  iso9660 ro,user,noauto          0       0
  644.   /dev/fd0        /mnt/a:     msdos   user,noauto             0       0
  645.   /dev/fd0        /mnt/a      ext2    user,noauto             0       0
  646.  
  647.   Now, to mount a DOS floppy, an ext2 floppy, and a CD-ROM:
  648.  
  649.        $ mount /mnt/a:
  650.        $ mount /mnt/a
  651.        $ mount /mnt/cdrom
  652.  
  653.   /mnt/a, /mnt/a:, and /mnt/cdrom can now be accessed by every user.
  654.   I've found that to write on /mnt/a without being root, right after
  655.   preparing the floppy it's necessary to do:
  656.  
  657.        # mount /mnt/a
  658.        # chmod 777 /mnt/a
  659.        # umount /mnt/a
  660.  
  661.   Remember that allowing anyone to mount disks this way is a gaping
  662.   security hole, if you care.
  663.  
  664.   4.2.  Backing Up
  665.  
  666.   Now that you know how to handle floppies etc., a couple of lines to
  667.   see how to do your backup. There are several packages to help you, but
  668.   the very least you can do for a multi-volume backup is (as root):
  669.  
  670.        # tar -M -cvf /dev/fd0H1440 /dir_to_backup
  671.  
  672.   Make sure to have a formatted floppy in the drive, and several ready.
  673.   To restore your stuff, insert the first floppy in the drive and do:
  674.  
  675.        # tar -M -xpvf /dev/fd0H1440
  676.  
  677.   5.  Tayloring the System
  678.  
  679.   5.1.  System Initialization Files
  680.  
  681.   Two important files under DOS are AUTOEXEC.BAT and CONFIG.SYS, which
  682.   are used at boot time to initialise the system, set some environment
  683.   variables like PATH and FILES, and possibly launch a program or batch
  684.   file. Under Linux there are several initialisation files, some of
  685.   which you had better not tamper with until you know exactly what you
  686.   are doing. I'll tell you what the most important are, anyway:
  687.  
  688.        FILES                           NOTES
  689.  
  690.        /etc/inittab                    don't touch for now!
  691.        /etc/rc.d/*                     ditto
  692.  
  693.   If all you need is setting the PATH and other environment variables,
  694.   or you want to change the login messages or automatically launch a
  695.   program after the login, have a look at the following files:
  696.  
  697.        FILES                           NOTES
  698.  
  699.        /etc/issue                      sets pre-login message
  700.        /etc/motd                       sets post-login message
  701.        /etc/profile                    sets PATH and other variables, etc.
  702.        /etc/bashrc                     sets aliases and functions, etc. (see below)
  703.        /home/your_home/.bashrc         sets your aliases + functions
  704.        /home/your_home/.bash_profile   sets environment + starts your progs
  705.        /home/your_home/.profile        ditto
  706.  
  707.   If the latter file exists (note that it is a hidden file), it will be
  708.   read after the login and the commands in it will be executed.
  709.  
  710.   Example---look at this .profile:
  711.  
  712.   ______________________________________________________________________
  713.   # I am a comment
  714.   echo Environment:
  715.   printenv | less   # equivalent of command SET under DOS
  716.   alias d='ls -l'   # easy to understand what an alias is
  717.   alias up='cd ..'
  718.   echo "I remind you that the path is "$PATH
  719.   echo "Today is `date`"  # use the output of command 'date'
  720.   echo "Have a good day, "$LOGNAME
  721.   # The following is a "shell function"
  722.   ctgz() # List the contents of a .tar.gz archive.
  723.   {
  724.     for file in $*
  725.     do
  726.       gzip -dc ${file} | tar tf -
  727.     done
  728.   }
  729.   # end of .profile
  730.   ______________________________________________________________________
  731.  
  732.   PATH and LOGNAME, you guessed right, are environment variables. There
  733.   are many others to play with; for instance, RMP for apps like less.
  734.  
  735.   5.2.  Program Initialization Files
  736.  
  737.   Under Linux, virtually everything can be tailored to your needs.  Most
  738.   programs have one or more initialization files you can fiddle with,
  739.   often as a .prognamerc in your home dir. The first ones you'll want to
  740.   modify are:
  741.  
  742.   /usr/lib/X11/fvwm/system.fvwmrc
  743.  
  744.   programs.
  745.  
  746.   For all of these and the others you'll come across sooner or later,
  747.   RMP.
  748.  
  749.   6.  A Bit of Programming
  750.  
  751.   6.1.  Shell Scripts: .BAT Files on Steroids
  752.  
  753.   If you used .BAT files to create shortcuts of long command lines (I
  754.   did a lot), this goal can be attained by inserting appropriate alias
  755.   lines (see example above) in profile or .profile.  But if your .BATs
  756.   were more complicated, then you'll love the scripting language made
  757.   available by the shell: it's as powerful as QBasic, if not more. It
  758.   has variables, structures like while, for, case, if... then... else,
  759.   and lots of other features: it can be a good alternative to a ``real''
  760.   programming language.
  761.  
  762.   To write a script---the equivalent of a .BAT file under DOS---all you
  763.   have to do is write a standard ASCII file containing the instructions,
  764.   save it, then make it executable with the command chgmod +x
  765.   <scriptfile>. To execute it, type its name.
  766.  
  767.   A word of warning. The system editor is called vi, and in my
  768.   experience most new users find it very difficult to use. I'm not going
  769.   to explain how to use it, because I don't like it and don't use it, so
  770.   there. See Matt Welsh's ``Linux installation...'', pag.  109. (You had
  771.   better get hold of another editor like joe or emacs for X.) Suffice it
  772.   here to say that:
  773.  
  774.   ╖  to insert some text, type 'i' then your text;
  775.  
  776.   ╖  to quit vi whithout saving, type <ESC> then :q!
  777.  
  778.   ╖  to save and quit, type <ESC> then :wq
  779.  
  780.   Writing scripts under bash is such a vast subject it would require a
  781.   book by itself, and I will not delve into the topic any further.  I'll
  782.   just give you an example of shell script, from which you can extract
  783.   some basic rules:
  784.  
  785.   ______________________________________________________________________
  786.  
  787.   #!/bin/sh
  788.   # sample.sh
  789.   # I am a comment
  790.   # don't change the first line, it must be there
  791.   echo "This system is: `uname -a`" # use the output of the command
  792.   echo "My name is $0" # built-in variables
  793.   echo "You gave me the following $# parameters: "$*
  794.   echo "First parameter is: "$1
  795.   echo -n "What's your name? " ; read your_name
  796.   echo look the difference: "hi $your_name" # quoting with "
  797.   echo look the difference: 'hi $your_name' # quoting with '
  798.   DIRS=0 ; FILES=0
  799.   for file in `ls .` ; do
  800.     if [ -d ${file} ] ; then # if file is a directory
  801.       DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
  802.     elif [ -f ${file} ] ; then
  803.       FILES=`expr $FILES + 1`
  804.     fi
  805.     case ${file} in
  806.       *.gif|*jpg) echo "${file}: graphic file" ;;
  807.       *.txt|*.tex) echo "${file}: text file" ;;
  808.       *.c|*.f|*.for) echo "${file}: source file" ;;
  809.       *) echo "${file}: generic file" ;;
  810.     esac
  811.   done
  812.   echo "there are ${DIRS} directories and ${FILES} files"
  813.   ls | grep "ZxY--!!!WKW"
  814.   if [ $? != 0 ] ; then # exit code of last command
  815.     echo "ZxY--!!!WKW not found"
  816.   fi
  817.   echo "enough... type 'man bash' if you want more info."
  818.   ______________________________________________________________________
  819.  
  820.   6.2.  C for Yourself
  821.  
  822.   Under Unix, the system language is C, love it or hate it. Scores of
  823.   other languages (FORTRAN, Pascal, Lisp, Basic, Perl, awk...) are also
  824.   available.
  825.  
  826.   Taken for granted that you know C, here are a couple of guidelines for
  827.   those of you who have been spoilt by Turbo C++ or one of its DOS
  828.   brothers. Linux's C compiler is called gcc and lacks all the bells and
  829.   whistles that usually accompany its DOS counterparts: no IDE, on-line
  830.   help, integrated debugger, etc. It's just a rough command-line
  831.   compiler, very powerful and efficient. To compile your standard
  832.   hello.c you'll do:
  833.  
  834.        $ gcc hello.c
  835.  
  836.   which will create an executable file called a.out. To give the
  837.   executable a different name, do
  838.  
  839.        $ gcc -o hola hello.c
  840.  
  841.   To link a library against a program, add the switch -l<libname>. For
  842.   example, to link the math library:
  843.  
  844.        $ gcc -o mathprog mathprog.c -lm
  845.  
  846.   (The -l<libname> switch forces gcc to link the library
  847.   /usr/lib/lib<libname>.a; so -lm links /usr/lib/libm.a).
  848.  
  849.   So far, so good. But when your prog is made of several source files,
  850.   you'll need to use the utility make. Let's suppose you have written an
  851.   expression parser: its source file is called parser.c and #includes
  852.   two header files, parser.h and xy.h. Then you want to use the routines
  853.   in parser.c in a program, say, calc.c, which in turn #includes
  854.   parser.h. What a mess! What do you have to do to compile calc.c?
  855.  
  856.   You'll have to write a so-called makefile, which teaches the compiler
  857.   the dependencies between sources and objects files. In our example:
  858.  
  859.   ______________________________________________________________________
  860.  
  861.   # This is makefile, used to compile calc.c
  862.   # Press the <TAB> key at appropriate positions!
  863.  
  864.   calc: calc.o parser.o
  865.   <TAB>gcc -o calc calc.o parser.o -lm
  866.   # calc depends on two object files: calc.o and parser.o
  867.  
  868.   calc.o: calc.c parser.h
  869.   <TAB>gcc -c calc.c
  870.   # calc.o depends on two source files
  871.  
  872.   parser.o:  parser.c parser.h xy.h
  873.   <TAB>gcc -c parser.c
  874.   # parser.o depends on three source files
  875.  
  876.   # end of makefile.
  877.   ______________________________________________________________________
  878.  
  879.   Save this file as makefile and type
  880.  
  881.        $ make
  882.  
  883.   to compile your program; alternatively, save it as calc.mak and type
  884.  
  885.        $ make -f calc.mak
  886.  
  887.   And of course, RMP.
  888.  
  889.   You can invoke some help about the C functions, that are covered by
  890.   man pages, section 3; for example,
  891.  
  892.        $ man 3 printf
  893.  
  894.   There are lots of libraries available out there; among the first
  895.   you'll want to use are ncurses, to handle textmode effects, and
  896.   svgalib, to do graphics. If you feel brave enough to tackle X
  897.   programming, get XForms ( bloch.phys.uwm.edu/pub/xforms) and/or MGUI (
  898.   www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm), two terrific
  899.   libraries that make X programming easy. Moreover, if you can't live
  900.   without an IDE a la Borland, get the package xwpe from
  901.   sunsite.unc.edu:/pub/Linux/apps/editors/. Chances are you'll like it.
  902.  
  903.   7.  The Remaining 1%
  904.  
  905.   7.1.  Making Virtual Memory
  906.  
  907.   Although Linux can in theory run with only 2 megs of RAM, the more you
  908.   have, the more you can do. X Window System won't run unless you have
  909.   at least 8 megs. To create an additional 8 megs of virtual memory,
  910.   type as root:
  911.  
  912.        # dd if=/dev/zero of=/swapfile bs=1024 count=8192
  913.        # mkswap /swapfile 8192
  914.        # sync
  915.        # swapon /swapfile
  916.  
  917.   Add the last line in /etc/rc.d/rc.local to make the swapfile available
  918.   the next time you boot, or add this line in /etc/fstab:
  919.  
  920.        /swapfile   swap   swap   defaults
  921.  
  922.   7.2.  Using tar & gzip
  923.  
  924.   Under Unix there are some widely used applications to archive and
  925.   compress files. tar is used to make archives---it's like PKZIP but it
  926.   doesn't compress, it only archives. To make a new archive:
  927.  
  928.        $ tar -cvf <archive_name.tar> <file> [file...]
  929.  
  930.   To extract files from an archive:
  931.  
  932.        $ tar -xpvf <archive_name.tar> [file...]
  933.  
  934.   To list the contents of an archive:
  935.  
  936.        $ tar -tf <archive_name.tar> | less
  937.  
  938.   You can compress files using compress, which is obsolete and shouldn't
  939.   be used any more, or gzip:
  940.  
  941.   $ compress <file>
  942.   $ gzip <file>
  943.  
  944.   that creates a compressed file with extension .Z (compress) or .gz
  945.   (gzip). These programs can compress only one file at a time. To
  946.   decompress, use:
  947.  
  948.        $ compress -d <file.Z>
  949.        $ gzip -d <file.gz>
  950.  
  951.   RMP.
  952.  
  953.   The unarj, zip and unzip (PK??ZIP compatible) utilities are also
  954.   available. Files with extension .tar.gz or .tgz (archived with tar,
  955.   then compressed with gzip) are as common in the Unix world as .ZIP
  956.   files are under DOS. Here's how to list the contents of a .tar.gz
  957.   archive:
  958.  
  959.        $ gzip -dc <file.tar.gz> | tar tf - | less
  960.  
  961.   7.3.  Installing Applications
  962.  
  963.   First of all: installing packages is root's work. Some Linux
  964.   applications are distributed as .tar.gz or .tgz archives, specifically
  965.   prepared so that they can be decompressed from / typing the following
  966.   command:
  967.  
  968.        # gzip -dc <file.tar.gz> | tar xvf -
  969.  
  970.   The files will be decompressed in the right directory, which will be
  971.   created on the fly. Users of the Slackware distribution have a user-
  972.   friendly pkgtool program; another is rpm, which is available on all
  973.   distributions thanks to Red Hat.
  974.  
  975.   Other packages shouldn't be installed from /; typically, the archive
  976.   will contain a directory called pkgname/ and a lot of files and/or
  977.   subdirectories under pkgname/. A good rule is to install those
  978.   packages from /usr/local. Besides, some packages are distributed as C
  979.   or C++ source files, which you'll have to compile to create the
  980.   binaries. In most cases, all you have to do is issue make. Obviously,
  981.   you'll need the gcc compiler.
  982.  
  983.   7.4.  Tips You Can't Do Without
  984.  
  985.   Command completion: pressing <TAB> when issuing a command will
  986.   complete the command line for you. Example: you have to type gcc
  987.   this_is_a_long_name.c; typing in gcc thi<TAB> will suffice. (If you
  988.   have other files that start with the same characters, supply enough
  989.   characters to resolve any ambiguity.)
  990.  
  991.   Backscrolling: pressing SHIFT + PAG UP (the grey key) allows you to
  992.   backscroll a few pages, depending on how much video memory you have.
  993.  
  994.   Resetting the screen: if you happen to more or cat a binary file, your
  995.   screen may end up full of garbage. To fix things, blind type reset or
  996.   this sequence of characters: echo CTRL-V ESC c RETURN.
  997.  
  998.   Pasting text: in console, see below; in X, click and drag to select
  999.   the text in an xterm window, then click the middle button (or the two
  1000.   buttons together if you have a two-button mouse) to paste. There is
  1001.   also xclipboard (alas, only for text); don't get confused by its very
  1002.   slow response.
  1003.  
  1004.   Using the mouse: install gpm, a mouse driver for the console.  Click
  1005.   and drag to select text, then right click to paste the selected text.
  1006.   It works across different VCs.
  1007.  
  1008.   Messages from the kernel: have a look at /var/adm/messages or
  1009.   /var/log/messages as root to see what the kernel has to tell you,
  1010.   including bootup messages.
  1011.  
  1012.   7.5.  Useful Programs and Commands
  1013.  
  1014.   This list reflects my personal preferences and needs, of course.
  1015.   First of all, where to find them. Since you all know how to surf the
  1016.   Net and how to use archie and ftp, I'll just give you three of the
  1017.   most important addresses for Linux: sunsite.unc.edu, tsx-11.mit.edu,
  1018.   and nic.funet.fi. Please use your nearest mirror.
  1019.  
  1020.   ╖  at allows you to run programs at a specified date and time;
  1021.  
  1022.   ╖  awk is a simple yet powerful language to manipulate data files (and
  1023.      not only). For example, being data.dat your multifield data file,
  1024.  
  1025.        $ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat
  1026.  
  1027.   prints out fields 1 and 4 of every line in data.dat whose second field
  1028.   contains ``abc''.
  1029.  
  1030.   ╖  delete-undelete do what their name means;
  1031.  
  1032.   ╖  df gives you info about the mounted disk(s);
  1033.  
  1034.   ╖  dosemu allows you to run several (not all) DOS programs---including
  1035.      Windows 3.x, with a bit of hacking;
  1036.  
  1037.   ╖  file <filename> tells you what filename is (ASCII text, executable,
  1038.      archive, etc.);
  1039.   ╖  find (see also Section ``dir'') is one of the most powerful and
  1040.      useful commands. It's used to find files that match several
  1041.      characteristics and perform actions on them. General use of find
  1042.      is:
  1043.  
  1044.        $ find <directory> <expression>
  1045.  
  1046.   where <expression> includes search criteria and actions. Examples:
  1047.  
  1048.        $ find . -type l -exec ls -l {} \;
  1049.  
  1050.   finds all the files that are symbolic links and shows what they point
  1051.   to.
  1052.  
  1053.        $ find / -name "*.old" -ok rm {} \;
  1054.  
  1055.   finds all the files matching the pattern and deletes them, asking for
  1056.   your permission first.
  1057.  
  1058.        $ find . -perm +111
  1059.  
  1060.   finds all the files whose permissions match 111 (executable).
  1061.  
  1062.        $ find . -user root
  1063.  
  1064.   finds all the files that belong to root. Lots of possibilities
  1065.   here---RMP.
  1066.  
  1067.   ╖  gnuplot is a brilliant program for scientific plotting;
  1068.  
  1069.   ╖  grep finds text patterns in files. For example,
  1070.  
  1071.        $ grep -l "geology" *.tex
  1072.  
  1073.   lists the files *.tex that contain the word ``geology''. The variant
  1074.   zgrep works on gzipped files. RMP;
  1075.  
  1076.   ╖  gzexe compresses executable binaries keeping them executable;
  1077.  
  1078.   ╖  joe is an excellent editor. Invoking it by typing jstar you'll get
  1079.      the same key bindings as WordStar and its offspring, including DOS
  1080.      and Borland's Turbo languages editors;
  1081.  
  1082.   ╖  less is probably the best text browser, and if properly configured
  1083.      lets you browse gzipped, tarred, and zipped files as well;
  1084.  
  1085.   ╖  lpr <file> prints a file in background. To check the status of the
  1086.      printing queue, use lpq; to remove a file from the printing queue,
  1087.      use lprm;
  1088.  
  1089.   ╖  mc is a great file manager;
  1090.  
  1091.   ╖  pine is a nice e-mailing program;
  1092.  
  1093.   ╖  script <script_file> copies to script_file what appears on screen
  1094.      until you issue the command exit. Useful for debugging;
  1095.  
  1096.   ╖  sudo allows users to perform some of root's tasks (e.g.  formatting
  1097.      and mounting disks; RMP);
  1098.  
  1099.   ╖  uname -a gives you info about your system;
  1100.  
  1101.   ╖  zcat and zless are useful for viewing gzipped text files without
  1102.      ungzipping them. Possible use:
  1103.  
  1104.        $ zless textfile.gz
  1105.        $ zcat textfile.gz | lpr
  1106.  
  1107.   ╖  The following commands often come in handy: bc, cal, chsh, cmp,
  1108.      cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings,
  1109.      tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs,
  1110.      znew. RMP.
  1111.  
  1112.   7.6.  Common Extensions and Related Programs
  1113.  
  1114.   You may come across scores of file extensions. Excluding the more
  1115.   exotic ones (i.e. fonts, etc.), here's a list of who's what:
  1116.  
  1117.   ╖
  1118.  
  1119.   ╖
  1120.  
  1121.   ╖  visualize it; dvips to turn it into a postscript .ps file.
  1122.  
  1123.   ╖
  1124.  
  1125.   ╖
  1126.  
  1127.   ╖  info.
  1128.  
  1129.   ╖
  1130.  
  1131.   ╖  containing the description of a package.
  1132.  
  1133.   ╖  optionally, ghostview.
  1134.  
  1135.   ╖  gzip.
  1136.  
  1137.   ╖  Get the package tex, available in many distributions; but beware of
  1138.      NTeX, which has corrupted fonts and is part of Slackware until
  1139.      version 96.
  1140.  
  1141.   ╖
  1142.  
  1143.   ╖
  1144.  
  1145.   ╖
  1146.  
  1147.   ╖
  1148.  
  1149.   8.  The End, for Now
  1150.  
  1151.   Congratulations! You have now grasped a little bit of Unix and are
  1152.   ready to start working. Remember that your knowledge of the system is
  1153.   still limited, and that you are expected to do more practice with
  1154.   Linux to use it comfortably. But if all you had to do was get a bunch
  1155.   of applications and start working with them, I bet that what I
  1156.   included here is enough.
  1157.  
  1158.   I'm sure you'll enjoy using Linux and will keep learning more about
  1159.   it---everybody does. I bet, too, that you'll never go back to DOS!  I
  1160.   hope I made myself understood and did a good service to my 3 or 4
  1161.   readers.
  1162.  
  1163.   8.1.  Copyright
  1164.  
  1165.   Unless otherwise stated, Linux HOWTO documents are copyrighted by
  1166.   their respective authors. Linux HOWTO documents may be reproduced and
  1167.   distributed in whole or in part, in any medium physical or electronic,
  1168.   as long as this copyright notice is retained on all copies. Commercial
  1169.   redistribution is allowed and encouraged; however, the author would
  1170.   like to be notified of any such distributions.
  1171.  
  1172.   All translations, derivative works, or aggregate works incorporating
  1173.   any Linux HOWTO documents must be covered under this copyright notice.
  1174.   That is, you may not produce a derivative work from a HOWTO and impose
  1175.   additional restrictions on its distribution. Exceptions to these rules
  1176.   may be granted under certain conditions; please contact the Linux
  1177.   HOWTO coordinator at the address given below.
  1178.  
  1179.   In short, we wish to promote dissemination of this information through
  1180.   as many channels as possible. However, we do wish to retain copyright
  1181.   on the HOWTO documents, and would like to be notified of any plans to
  1182.   redistribute the HOWTOs.
  1183.  
  1184.   If you have questions, please contact Greg Hankins, the Linux HOWTO
  1185.   coordinator, at gregh@sunsite.unc.edu via email.
  1186.  
  1187.   8.2.  Disclaimer
  1188.  
  1189.   ``From DOS to Linux HOWTO'' was written by Guido Gonzato,
  1190.   guido@ibogfs.df.unibo.it. Many thanks to Matt Welsh, the author of
  1191.   ``Linux Installation and Getting Started'', to Ian Jackson, the author
  1192.   of ``Linux frequently asked questions with answers'', to Giuseppe
  1193.   Zanetti, the author of ``Linux'', to all the folks who emailed me
  1194.   suggestions, and especially to Linus Torvalds and GNU who gave us
  1195.   Linux.
  1196.  
  1197.   This document is provided ``as is''. I put great effort into writing
  1198.   it as accurately as I could, but you use the information contained in
  1199.   it at your own risk. In no event shall I be liable for any damages
  1200.   resulting from the use of this work.
  1201.  
  1202.   Feedback is welcome. For any requests, suggestions, flames, etc., feel
  1203.   free to contact me.
  1204.  
  1205.   Enjoy Linux and life,
  1206.  
  1207.   Guido   =8-)
  1208.  
  1209.